import axios from 'axios'
// 创建 axios 实例
const request = axios.create({
  // API 请求的默认前缀
  baseURL: "/",
  timeout: 10000 // 请求超时时间
})

// 异常拦截处理器
const errorHandler = (error) => {
  console.log(error,'请求拦截器')
  return Promise.reject(error)
}

// request interceptor
request.interceptors.request.use(config => {

  return config
}, errorHandler)

// response interceptor
request.interceptors.response.use((response) => {
  return response.data
}, errorHandler)

/**
 * 发送get 请求函数
 * @param url 请求地址
 * @param params 请求参数
 * @param headers 请求头信息
 * @returns {*}
 */
export const getAction = (url, params, headers = {}) => {
  return request({
    url,
    method: 'GET',
    params,
    headers
  })
}
/**
 * 发送del 请求函数
 * @param url 请求地址
 * @param params 请求参数
 * @param headers 请求头信息
 * @returns {*}
 */
export const delAction = (url, params, data, headers = {}) => {
  return request({
    url,
    method: 'delete',
    params,
    data,
    headers
  })
}
/**
 * 发送post 请求的函数
 * @param url 请求地址
 * @param data 请求数据
 * @param params 请求参数
 * @param headers 请求头信息
 * @returns {*}
 */
export const postAction = (url, data, params, headers = {}) => {
  return request({
    url,
    method: 'POST',
    data,
    params,
    headers
  })
}
/**
 * 发送PUT 请求的函数
 * @param url 请求地址
 * @param data 请求数据
 * @param params 请求参数
 * @param headers 请求头信息
 * @returns {*}
 */
export const putAction = (url, data, params, headers = {}) => {
  return request({
    url,
    method: 'PUT',
    data,
    params,
    headers
  })
}

/**
 * （二进制文件流）请求函数
 * @param option 配置信息
 * @returns {*}
 */
export const blobAction = (option) => {
  return request({ ...option, responseType: 'blob' })
}

export default request
